package main

import (
	"fmt"
)

func main() {
	x := 1563847412
	fmt.Println(reverse(x))
}

//#link:https://leetcode-cn.com/problems/reverse-integer/
/**
 * @Description:给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
 */
func reverse(x int) int {
	result := 0
	max, min := 1<<31, -1<<31
	for x != 0 {
		pop := x % 10
		//1<<31-1最后为7，当result比最大值除10还要大或者最后一位数要加的大于7
		if result > max/10 || (result == max/10 && pop > 7) {
			return 0
		}
		//1<<31-1最后为8，当result比最小值除10还要小或者最后一位数要减的小于-8
		if result < min/10 || (result == min/10 && pop < -8) {
			return 0
		}
		result = result*10 + x%10
		x /= 10
	}
	return result
}
